package org.huawei260.TiKu.E;


import static java.lang.Character.isDigit;

/**
 * @Auther: qingle
 * @Date: 2024/10/27-16:39
 * @Description:
 *
 * 题目描述
 * 有一种简易压缩算法: 针对全部由小写英文字母组成的字符串，将其中连续超过两个相同字母的部分压缩为连续个数加该字母，其他部分保持原样不变。
 *
 * 例如: 字符串"aaabbccccd"经过压缩成为字符串"3abb4cd"。
 *
 * 请您编写解压函数，根据输入的字符串，判断其是否为合法压缩过的字符串若输入合法则输出解压缩后的字符串，否则输出字符串"!error"来报告错误。
 *
 * 输入格式
 * 输入一行，为一个ASCII字符串，长度不会超过100字符，用例保证输出的字符串长度也不会超过100字符。
 * 输出格式
 * 若判断输入为合法的经过压缩后的字符串，则输出压缩前的字符串若输入不合法，则输出字符串“!error”
 * 输入样例    复制
 * 4dff
 * 输出样例    复制
 * ddddff
 *
 * @version: 1.0
 */
public class E_2502_2024E_一种字符串压缩表示的解压 {

	public static void main(String[] args) {
		String s = "4dff";
		String result = getResult(s);
		System.out.println(result);
	}

	private static String getResult(String s) {

		if(s.length()>100) return "!error";
		if(s.length()==1) return s;
		StringBuilder sb = new StringBuilder();
		for (int i = 0; i < s.length()-1; i++) {
			if(isDigit(s.charAt(i))) {
				if(isDigit(s.charAt(i+1))) {
					return "!error";
				} else {
					int num = Integer.parseInt(s.substring(i,i+1));
					char c = s.charAt(i+1);
					for (int j = 0; j < num; j++) {
						sb.append(c);
					}
					i++;
				}
			}
			else sb.append(s.charAt(i));
		}

		if(isDigit(s.charAt(s.length()-1))) return "!error";
		sb.append(s.charAt(s.length()-1));
		return sb.toString();

	}
}
